GtkThemingEngine: Also render topright and bottomleft corners if junction sides say so
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 24 Nov 2010 22:20:15 +0000 (23:20 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:39:44 +0000 (15:39 +0100)
gtk/gtkthemingengine.c

index e16dc037a9f02e78670d8032acaca4aa395af084..63b27ba6cbe4f22afefc2c467f0fdea6509a7718 100644 (file)
@@ -1682,27 +1682,32 @@ render_frame_internal (GtkThemingEngine *engine,
                                     junction);
       cairo_stroke (cr);
 
-      if (radius == 0 &&
-          border_width > 1)
+      if (border_width > 1)
         {
           /* overprint top/right and bottom/left corner
-           * triangles, to give the box a 3D-like appearance
+           * triangles if there are square corners there,
+           * to give the box a 3D-like appearance.
            */
+          cairo_save (cr);
+
           if (border_style == GTK_BORDER_STYLE_INSET)
             gdk_cairo_set_source_rgba (cr, &lighter);
           else
             gdk_cairo_set_source_rgba (cr, border_color);
 
-          cairo_save (cr);
-
           cairo_set_line_width (cr, 1);
 
-          _cairo_corner_triangle (cr,
-                                  x + width - border_width, y,
-                                  border_width);
-          _cairo_corner_triangle (cr,
-                                  x, y + height - border_width,
-                                  border_width);
+          if (radius == 0 ||
+              (junction & GTK_JUNCTION_CORNER_TOPRIGHT) != 0)
+            _cairo_corner_triangle (cr,
+                                    x + width - border_width, y,
+                                    border_width);
+
+          if (radius == 0 ||
+              (junction & GTK_JUNCTION_CORNER_BOTTOMLEFT) != 0)
+            _cairo_corner_triangle (cr,
+                                    x, y + height - border_width,
+                                    border_width);
           cairo_stroke (cr);
           cairo_restore (cr);
         }